﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PPHandler
{
    class Windows
    {

        ///
        /// Beinhaltet alle zur Zeit geöffneten und Minimierten Fenster
        ///
        public LinkedList<Window> lstWindows = new LinkedList<Window>();

        public Windows(){
            getWindows();
        }

        ///
        /// Delegate Funktion für EnumWindows (Siehe Declarations)
        /// Gibt die Werte an EnumWindowCallBack weiter
        ///
        public delegate bool WinCallBack(int hwnd, int lParam);

        private void getWindows()
        {
            //Liste mit Fenstern befüllen
            User32.EnumWindows(new WinCallBack(EnumWindowCallBack), 0);

        }

        ///
        /// Diese Funktion wird durch die Delegate Funktion WinCallBack aufgerufen
        /// und iteriert durch alle zur Zeit geöffneten Fenster
        private bool EnumWindowCallBack(int hwnd, int lParam)
        {
            Window w = new Window((IntPtr)hwnd);
            this.lstWindows.AddLast(w);
            return true;
        }

    }
}
